package com.zh;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.function.Consumer;

/**
 * 演示ArrayList的用法
 *
 *
 *
 * 1.构造函数
 * ---1.ArrayList() 空参
 *
 *
 *
 *2.成员方法
 * ---1.add(Object obj)
 * ---2.add(int index,Object obj)
 * ---3.get(int index)
 * ---4.set(int index,Object obj)
 * ---5.remove(int index)
 * ---6.size()
 * ---7.clear()
 * ---8.contains(Object obj)
 * ---9.迭代器
 */
public class ArrayListDemo {
    public static void main(String[] args) {
        //1. 创建ArrayList对象
        //底层赋值了一个空数组
        ArrayList <String>list = new ArrayList<String>();
        //2.往ArrayList集合中添加元素
        list.add("zhangsan");//在数组尾部添加数据
        list.add(0,"lisi");//在数组指定位置添加数据
        //获取数据
        String s = list.get(1);
        System.out.println(s);
        //修改数据
        list.set(0, "wangwu");
        list.remove(1);

        list.add("zhangsan");
        list.add("lisi");
        list.add("wangwu");
        list.add("zhaoliu");
        list.add("zhangsan");
        list.add("zhangsan");
        System.out.println(list);
        System.out.println("----------集合的遍历方式1----------");
        //1.for循环形式
        for(int i = 0; i < list.size(); i++){
            String obj = list.get(i);
            System.out.println(obj);
        }
        //2.增强for循环形式
        System.out.println("----------集合的遍历方式2----------");
        for(String obj : list){
            System.out.println(obj);
        }
        //3.迭代器形式
        System.out.println("----------集合的遍历方式3----------");
        //获取集合的迭代器对象
        Iterator<String> iterator = list.iterator();
        while(iterator.hasNext()){
            String next = iterator.next();
            System.out.println(next);
        }
        //4.Lambda表达式方式
        System.out.println("----------集合的遍历方式4----------");
        //Lambda表达式本质是一个函数
//        Consumer<String> consumer = ;
//        list.forEach(str-> System.out.println(str));
        list.forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        });
        //Lambda表达式
        list.forEach(name-> System.out.println(name));
        //方法引用
        list.forEach(System.out::println);
    }

}


